package algo3.pruebas;

import junit.framework.TestCase;
import algo3.modelo.Direccion;
import algo3.modelo.Posicion;

public class PosicionTest extends TestCase {

	
	public void testCrearConFilaYColumnaFila() throws Exception {
		Posicion pos = new Posicion(4, 3);
		assertEquals("Falla posicion fila", 3, pos.getFila());
		assertEquals("Falla posicion columna", 4, pos.getColumna());
	}

	public void testPosicionesIguales() throws Exception {
		Posicion pos1 = new Posicion(4, 3);
		Posicion pos2 = new Posicion(4, 3);
		assertTrue(pos1.equals(pos2));
		assertTrue(pos2.equals(pos1));
		assertEquals(pos1.hashCode(), pos2.hashCode());
	}
	
	public void testPosicionConstructorCopia() throws Exception {
		Posicion pos1 = new Posicion(4, 3);
		Posicion pos2 = new Posicion(pos1);
		assertTrue(pos1.equals(pos2));
		assertFalse(pos1 == pos2);
	}

	public void testProximaEnDireccion() throws Exception {
		
		Posicion posInicial = new Posicion(4, 3);
		Posicion posNueva = new Posicion(0, 0);
		
		posNueva = posInicial.proximaEnDireccion(Direccion.ARRIBA);
		assertEquals(new Posicion(4, 4), posNueva);
		
		posNueva = posInicial.proximaEnDireccion(Direccion.ABAJO);
		assertEquals(new Posicion(4, 2), posNueva);

		posNueva = posInicial.proximaEnDireccion(Direccion.DERECHA);
		assertEquals(new Posicion(5, 3), posNueva);
		
		posNueva = posInicial.proximaEnDireccion(Direccion.IZQUIERDA);
		assertEquals(new Posicion(3, 3), posNueva);

		posNueva = posInicial.proximaEnDireccion(Direccion.DIAG_DERECHA_ARRIBA);
		assertEquals(new Posicion(5, 4), posNueva);

		posNueva = posInicial.proximaEnDireccion(Direccion.DIAG_DERECHA_ABAJO);
		assertEquals(new Posicion(5, 2), posNueva);

		posNueva = posInicial.proximaEnDireccion(Direccion.DIAG_IZQUIERDA_ARRIBA);
		assertEquals(new Posicion(3, 4), posNueva);

		posNueva = posInicial.proximaEnDireccion(Direccion.DIAG_IZQUIERDA_ABAJO);
		assertEquals(new Posicion(3, 2), posNueva);

	}

}
